#include "iwdg.h"
#include "stm32f429xx.h"

#define IWDG_KR_KEY_ENABLE 0x0000CCCC  // 启动看门狗的键值
#define IWDG_KR_KEY_ACCESS 0x00005555  // 解锁IWDG寄存器的键值

void iwdgInit(uint8_t prescaler, uint16_t reload_value) {
    /* 
     * P713-->IWDG_KR
     *        IWDG_PR
     * P714-->IWDG_RLR
     * P712-->Table 108 选择prescaler 0x06 /256 
     * 超时时长=2^(prescaler+2)/32 ms
     */
    IWDG->KR = IWDG_KR_KEY_ACCESS; // 解锁IWDG寄存器
    IWDG->PR = prescaler; // 设置预分频值
    IWDG->RLR = reload_value; // 设置重装载计数值
    IWDG->KR = IWDG_KR_KEY_RELOAD; // 重载计数值
    IWDG->KR = IWDG_KR_KEY_ENABLE; // 启动看门狗
}
